System.IEquatable.Equals 方法

上一篇:IDisposable 方法 下一篇:IFormatProvider 方法

方法描述

指示当前对象是否等于同一类型的另一个对象。

语法定义(C# System.IEquatable.Equals 方法 的用法)

bool Equals(
	T other
)

参数/返回值

参数值/返回值 参数类型/返回类型 参数描述/返回描述
other T 与此对象进行比较的对象。
返回值 System.Boolean 如果当前对象等于 other 参数,则为 true;否则为 false。

提示和注释

Equals 方法的实现用于测试是否与另一个类型为 T(与当前对象类型相同)的对象相等。 在下列情况下将调用 Equals 方法:

调用 Equals 方法并且 other 参数表示类型为 T 的强类型对象时。 (如果 other 的类型为 Object,则调用基方法 Object.Equals(Object)。 在这两种方法中,IEquatable.Equals 提供稍好一点的性能。)

调用许多泛型集合对象的搜索方法时。 其中某些类型及其方法包括:

BinarySearch 方法的某些泛型重载。

List 类的搜索方法,包括 List.Contains(T)、List.IndexOf、List.LastIndexOf 和 List.Remove。

Dictionary 类的搜索方法,包括 ContainsKey 和 Remove。

LinkedList 泛型类的搜索方法,包括 LinkedList.Contains 和 Remove。

换句话说,若要处理类的对象将存储在数组或泛型集合对象中的可能性,最好实现 IEquatable 以便可轻松地识别和操作该对象。

实现 Equals 方法时,为泛型类型参数指定的类型定义相应的相等性。 例如,如果类型参数为 Int32,则为两个 32 位有符号整数的比较定义相应的相等性。

对实现者的说明

如果实现 Equals,还应重写 Object.Equals(Object) 和 GetHashCode 的基类实现,以便其行为与 IEquatable.Equals 方法的行为一致。 如果重写 Object.Equals(Object),则对相应类调用静态 Equals(System.Object, System.Object) 方法时也会调用重写的实现。 这可确保 Equals 方法的所有调用都返回一致的结果,如下面的示例所示。

System.IEquatable.Equals 方法例子

然后,Person 对象可存储在 List 对象中,并可通过 Contains 方法进行识别,如下面的示例所示。

public class TestIEquatable
{
   public static void Main()
   {
      // Create a Person object for each job applicant.
      Person applicant1 = new Person("Jones", "099-29-4999");
      Person applicant2 = new Person("Jones", "199-29-3999");
      Person applicant3 = new Person("Jones", "299-49-6999");

      // Add applicants to a List object.
      List applicants = new List();
      applicants.Add(applicant1);
      applicants.Add(applicant2);
      applicants.Add(applicant3);

      // Create a Person object for the final candidate.
      Person candidate = new Person("Jones", "199-29-3999");

      if (applicants.Contains(candidate))
         Console.WriteLine("Found {0} (SSN {1}).", 
                            candidate.LastName, candidate.SSN);
      else
         Console.WriteLine("Applicant {0} not found.", candidate.SSN);

      // Call the shared inherited Equals(Object, Object) method.
      // It will in turn call the IEquatable(Of T).Equals implementation.
      Console.WriteLine("{0}({1}) already on file: {2}.",  
                        applicant2.LastName, 
                        applicant2.SSN, 
                        Person.Equals(applicant2, candidate)); 
   }
}
// The example displays the following output:
//       Found Jones (SSN 199-29-3999).
//       Jones(199-29-3999) already on file: True.

异常

异常 异常描述

命名空间

namespace: System

程序集: mscorlib(在 mscorlib.dll 中)

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。

上一篇:IDisposable 方法 下一篇:IFormatProvider 方法